perm filename ZONKER.PAL[AL,HE]2 blob sn#310655 filedate 1977-10-20 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	 This file gives the definitions for using the zonker. When loaded it
C00005 ENDMK
C⊗;
COMMENT ⊗ This file gives the definitions for using the zonker. When loaded it
	also sets up a "standard" zonker configuration for the AL runtime
	system.⊗


;ZONKER OPCODES FOR DIAGNOSTIC REGISTER
ZREAD=0
ZREAD4=1
ZWRITE=2
ZWRIT4=3
ZDBOX0=0
ZDBOX1=100
ZDBOX2=200
ZDBOX3=300
ZDHOG=1000

;ZONKER IO LOCATIONS
ZCSR=167400
ZDIAG=167402
ZDCYC=167404
ZDIAGW=167404
ZDIAGR=167406
ZMRAM=167440

;Zonker Control Status Register (ZCSR)
ZRESET = 2
ZONKON = 4

;ZONKER MAP RAM DEFINITIONS
ZHOG=200
ZCYC=100	;Valid mapping
ZBOX0=0
ZBOX1=10
ZBOX2=20
ZBOX3=30

COMMENT ⊗ Now initialize the zonker so zonker box 2 is mapped as follows:
		  zonker address	 unibus address
		      0 - 277 777	200 000 - 477 777	(48K)
		300 000 - 377 777	600 000 - 677 777	(16K)
	(this will be contiguous when the "crock" memory goes away) ⊗

temp1 == .	;Save the location counter
temp2 == %OFFSE	;Save the current offset
.OFFSET -600000	;We want to use real physical addresses here.

. = ZCSR
	ZRESET	;Reset zonker

. = ZMRAM
.REPT 20
	.WORD 0	;Clear zonker mapping registers
.ENDR

. = ZMRAM + 10	;Unibus address 200 000
.REPT 6
	ZCYC + ZBOX2 + .RPCNT	;Map next 8K of zonker box 2
.ENDR

. = ZMRAM + 30	;Unibus address 600 000
	ZCYC + ZBOX2 + 6	;Map last 16K of zonker box 2
	ZCYC + ZBOX2 + 7

. = ZCSR
	ZONKON	;Turn on the zonker!

.OFFSET temp2	;Restore Offset
. = temp1	;Restore Location Counter